﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Website
{
    public partial class Startpagina : System.Web.UI.Page
    {
        private DateTime selectedDay;

        protected void Page_Load(object sender, EventArgs e)
        {
            selectedDay = DateTime.Now;

            initComponents();
        }

        private void initComponents()
        {
            loadMovies();
          
            var verwachtefilms = (from f in Module.database.Films
                                  where f.status == "verwacht"
                                  select f).Take(2);

            foreach (var film in verwachtefilms)
            {
                VerwachteFilm verwachteFilm = (VerwachteFilm)LoadControl("VerwachteFilm.ascx");
                verwachteFilm.Film = film;
                Panel_Verwachte_Films.Controls.Add(verwachteFilm);
            }

            int currentDay = Convert.ToInt32(DateTime.Now.DayOfWeek);

            String day3 = String.Empty;
            String day4 = String.Empty;

            if ((currentDay + 2) < 7)
            {
                day3 = (DateTime.Now.DayOfWeek + 2).ToString();
            }
            else
            {
                day3 = ((DateTime.Now.DayOfWeek + 2) - 7).ToString();
            }

            if ((currentDay + 3) < 7)
            {
                day4 = (DateTime.Now.DayOfWeek + 3).ToString();
            }
            else
            {
                day4 = ((DateTime.Now.DayOfWeek + 3) - 7).ToString();
            }

            dag2.Text = translateDayOfWeek(day3);
            dag3.Text = translateDayOfWeek(day4);
        }

        private void loadMovies()
        {
            var films = from f in Module.database.Films
                        select f;

            foreach (var f in films)
            {
                // DAG 0
                var voorstellingen = from v in Module.database.Voorstellings
                                     where v.Film == f && v.datumtijd.Day == DateTime.Now.Day
                                     select v;

                if (voorstellingen.Count() > 0)
                {                    
                    FilmMetVoorstellingen filmMetVoorstellingen = (FilmMetVoorstellingen)LoadControl("FilmMetVoorstellingen.ascx");
                    filmMetVoorstellingen.setgetFilm = voorstellingen.First().Film;
                    filmMetVoorstellingen.voorstellingen = voorstellingen;
                    Panel_Films_Dag0.Controls.Add(filmMetVoorstellingen);
                }

                // DAG 1
                voorstellingen = from v in Module.database.Voorstellings
                                     where v.Film == f && v.datumtijd.Day == DateTime.Now.AddDays(1).Day
                                     select v;

                if (voorstellingen.Count() > 0)
                {
                    FilmMetVoorstellingen filmMetVoorstellingen = (FilmMetVoorstellingen)LoadControl("FilmMetVoorstellingen.ascx");
                    filmMetVoorstellingen.setgetFilm = voorstellingen.First().Film;
                    filmMetVoorstellingen.voorstellingen = voorstellingen;
                    Panel_Films_Dag1.Controls.Add(filmMetVoorstellingen);
                }

                // DAG 2
                voorstellingen = from v in Module.database.Voorstellings
                                 where v.Film == f && v.datumtijd.Day == DateTime.Now.AddDays(2).Day
                                 select v;

                if (voorstellingen.Count() > 0)
                {
                    FilmMetVoorstellingen filmMetVoorstellingen = (FilmMetVoorstellingen)LoadControl("FilmMetVoorstellingen.ascx");
                    filmMetVoorstellingen.setgetFilm = voorstellingen.First().Film;
                    filmMetVoorstellingen.voorstellingen = voorstellingen;
                    Panel_Films_Dag2.Controls.Add(filmMetVoorstellingen);
                }

                // DAG 3
                voorstellingen = from v in Module.database.Voorstellings
                                 where v.Film == f && v.datumtijd.Day == DateTime.Now.AddDays(3).Day
                                 select v;

                if (voorstellingen.Count() > 0)
                {
                    FilmMetVoorstellingen filmMetVoorstellingen = (FilmMetVoorstellingen)LoadControl("FilmMetVoorstellingen.ascx");
                    filmMetVoorstellingen.setgetFilm = voorstellingen.First().Film;
                    filmMetVoorstellingen.voorstellingen = voorstellingen;
                    Panel_Films_Dag3.Controls.Add(filmMetVoorstellingen);
                }
            }
        }

        private String translateDayOfWeek(String name)
        {
            String returnvalue = String.Empty;

            switch (name)
            {
                case "Monday":
                    returnvalue = "Maandag";
                    break;
                case "Tuesday":
                    returnvalue = "Dinsdag";
                    break;
                case "Wednesday":
                    returnvalue = "Woensdag";
                    break;
                case "Thursday":
                    returnvalue = "Donderdag";
                    break;
                case "Friday":
                    returnvalue = "Vrijdag";
                    break;
                case "Saturday":
                    returnvalue = "Zaterdag";
                    break;
                case "Sunday":
                    returnvalue = "Zondag";
                    break;
            }

            return returnvalue;
        }

    }
}